1、异步通知简介
	异步通知类似于硬件上的中断，它是在软件层面对硬件中断一种模拟，当设备可用时驱动向应用层发送信号，应用
程序收到信号后可以进行相应的处理。
2、应用层使用异步通知
	1)注册信号处理函数
	2)打开设备文件
	3)设置在此文件描述符上接收信号的进程标识
	4)设置标识输入输出可进行的信号
	5)设置文件的 FASYNC 标志
3、驱动层实现异步通知
	1)定义一个 struct fasync_struct 指针变量
	2)实现 int (*fasync)(int fd, struct file *filp, int on) 函数，此函数一般要调用 int fasync_helper(int 
fd, struct file * filp, int on, struct fasync_struct **fapp) 函数来初始化 struct fasync_struct 指针（在应
用层设置FASYNC标志时会执行驱动的 fasync 函数）。
	3)在设备可以用时调用 void kill_fasync(struct fasync_struct **fp, int sig, int band) 发送信号，并设置
资源可用类型。
	4)在release中调用第2步中实现的fasync函数（xx_fasync(-1, filp, 0)）。
